#pragma once

// 基于crypt加密用户密码和生成对应的盐值
// 基于openssl库计算文件哈希值
#include "standard_library.h"

#define SHA256_LENGTH EVP_MD_size(EVP_sha256())


// userpassd用户密码，salt是传入一级指针的地址，传出结果起始地址
// hash使用
int cryptPasswd(char *userpassd, char **salt, char **hash);


int getRandCryptSalt(char **salt);


void printHash(unsigned char *hash,size_t len);

int getFileSha256(int file_fd,unsigned char *hash);

// 传入文件描述符,和SHA256_LENGTH+1大小的字符数组接收结果
int getFileSha256_str(int file_fd,char res_str[]);

// 将二进制哈希转为十六进制字符串
int bin2hex(unsigned char *bin, size_t len, char *hex);

// 比较哈希值
int compare_hash(unsigned char *hash1, const char *hex_hash2);

// 传入用户名，传出token;
int getToken(char name[],char token[]);
